package intelligentCustomer.planning;


import dev.langchain4j.model.openai.OpenAiStreamingChatModel;

/**
 * 需求分析步骤
 * 分析用户查询，提取关键需求
 */
public class AnalysisStep implements PlanStep {
    private final String name;
    private final OpenAiStreamingChatModel model;
    private int detailLevel = 1; // 分析详细程度，用于调整
    
    public AnalysisStep(String name, OpenAiStreamingChatModel model) {
        this.name = name;
        this.model = model;
    }
    
    @Override
    public String execute(PlanningContext context) {
        String prompt = String.format(
            "分析以下用户查询，提取关键需求和意图。详细程度：%d\n" +
            "用户查询：%s\n" +
            "请提供结构化的分析结果，包括：\n" +
            "1. 主要意图\n" +
            "2. 关键需求\n" +
            "3. 约束条件\n" +
            "4. 隐含需求",
            detailLevel,
            context.getQuery()
        );

        return ReasonGenerator.generate(model, prompt);
    }
    
    @Override
    public String getName() {
        return name;
    }
    
    @Override
    public void adjustParameters(PlanningContext context) {
        // 根据重试次数增加分析详细程度
        detailLevel = Math.min(3, detailLevel + 1);
    }
} 